home *** CD-ROM | disk | FTP | other *** search
- /*//////////////////////////////////////////////////////////////////////
- filename: ws_misc.js
- copyright(c): 2002, 2003 Tiny Software Inc (http://www.tinysoftware.com)
- author: Martin Navratil (mnavratil@tinysoftware.com)
- product: Tiny Personal Firewall 5.x
- description: javascript functions for ws_misc.html
- ///////////////////////////////////////////////////////////////////////*/
- var ERR_GET_MODULE_PARSER = "Error: Cannot get Parser object for Sandbox",
- ERR_GET_RULELIST = "Error: Cannot get rule list from parser",
- THIS_DIV = "misc",
- HTML_THIS_DIV_HEADER = '<DIV id=' + THIS_DIV + '>',
- HTML_THIS_DIV_TRAILER = "</DIV>",
- HTML_TABLE_HEADER = '<table border="1" align="left" cellpadding=5 cellspacing=0 bordercolor="#000000" bgcolor="#E7EFF7">',
- HTML_TABLE_TRAILER = "</table>",
- HTML_TABLE_LABEL_HEADER1 = "<table width=100% border=0 cellspacing=0 cellpadding=0><tr bgcolor=",
- HTML_TABLE_LABEL_HEADER2 = "><td height=25 align=middle><font color=white><B>",
- HTML_TABLE_LABEL_TRAILER = "</B></font></td></tr></table>",
- HTML_TABLES_SEPARATOR = "<BR/><BR/>"
- HTML_ROW_HEADER = '<TR height="40">',
- HTML_SYSTEM_ROW_HEADER = '<TR height="40" bgcolor="#f2f2f2">',
- HTML_ROW_TRAILER = "</TR>",
- HTML_HEADER_HEADER = '<TH style="font-face:bold;font-size:8pt;">',
- HTML_HEADER_TRAILER = "</TH>",
- HTML_CELL_HEADER = "<TD align=center>",
- HTML_CELL_TRAILER = "</TD>",
- HTML_ID_EDIT_HEADER = '<INPUT type=edit size=3 ',
- HTML_ID_EDIT_TRAILER = '></INPUT>',
- HTML_ID_LINK_HEADER = '<A href=# ',
- HTML_ID_LINK_TRAILER = '</A>',
- HTML_CHECK_HEADER = '<INPUT type="checkbox" ',
- HTML_CHECK_TRAILER = '/>',
- HTML_INSERT_USER_RULE = '<IMG src="ico-plus.gif" align=absMiddle alt = "Rule for non-system processes"/> Rule for non-system apps',
- HTML_INSERT_SYSTEM_RULE = '<IMG src="ico-plus.gif" align=absMiddle alt = "Rule for system processes"/> Rule for system apps',
- HTML_ADD_EXISTING = '<IMG src="ico-plus.gif" align=absMiddle alt = "Add existing rule"/>Add existing rule',
- HTML_ICO_MINUS = '<IMG src="ico-minus.gif" alt="Delete rule"/>',
- HTML_SELECT_HEADER = '<SELECT ',
- HTML_SELECT_TRAILER = '></SELECT>',
- HTML_OPTION_HEADER = '<OPTION value="',
- HTML_OPTION_TRAILER = '</OPTION>';
- HTML_DISABLED = 'disabled';
-
-
- var NO_COLUMNS = 5;
-
- var TXT_PRO_HIGH_MASTER = "High Priority List - Common rules",
- TXT_CLIENT = "Medium Priority List - Non-Privileged User Defined",
- TXT_PRO_LOW_MASTER = "Low Priority List - Common rules",
- TXT_DELETING = "Deleting rule",
- TXT_QST_REALLYDELETE1 = 'Do you really want to delete ',
- TXT_QST_REALLYDELETE2 = ' from the list of rules?',
- TXT_NEW_EXC_APP = 'Enter app./group',
-
- // columns
- TXT_ID_CAPTION = "Rule #",
- TXT_APP_CAPTION = "Application",
- TXT_ACCESS = "Allow dangerous system access",
- TXT_AUDIT = "Monitor dangerous system access",
- TXT_ASGNMT = (window.external.Managed || window.external.Context ? "Assignment" : "Users"),
- TXT_ALLUSERS = "All Users (*)";
-
- var arrAccessResultStrings = new Array("Prevent", "Allow", "Ask User");
- var arrAuditLevelStrings = new Array("Ignore", "Monitor", "Alert");
- var arrVBAOptions = new Array("Inherit from parent", "Use custom settings",
- "Do not run macro");
- var arrGuardIds = new Array('V'.charCodeAt(0), 'Y'.charCodeAt(0), 'G'.charCodeAt(0)),
- strDisabled = new Array(3);
-
- var AR_ALLOW = 0x0001,
- AR_PREVENT = 0x0000,
- AR_ASKUSER = 0x0002;
-
- var AL_IGNORE = 0x0000,
- AL_MONITOR = 0x0001,
- AL_ALERT = 0x0002;
-
- var OT_VBAMACRO = 0x00000020,
- OT_SYSTEMPRIV = 0x00000080,
- OT_DEVICEPRIV = 0x00000100;
-
- var PRIOR_LOW = 0,
- PRIOR_NORMAL = 1,
- PRIOR_HIGH = 2;
-
- var RT_DIRECT = 0,
- RT_DEFINITION = RT_DIRECT + 1;
-
- var AT_SYSPRIV_FORCED_PROC_THREAD_TERM = 0x00002000,
- AT_SYSPRIV_SYSTEMSHUTDOWN = 0x00000100,
- AT_SYSPRIV_SETOBJSECURITY = 0x00000200,
- AT_SYSPRIV_INJECTCODE = 0x00001000,
- AT_SYSPRIV_ACQUIRESYSPRIV = 0x00008000,
- AT_SYSPRIV_CLIPBOARDACCESS = 0x00004000,
- AT_SYSPRIV_ALL = 0x0000F300,
-
- AT_VBA_FULL = 0x00000005;
-
- var iLastIndex = -1;
-
- var arrARImgSrc = new Array(),
- arrALImgSrc = new Array(),
- arrARTitles = new Array(),
- arrALTitles = new Array();
-
- arrARImgSrc[AR_ALLOW] = "allow.gif";
- arrARImgSrc[AR_PREVENT] = "prevent.gif";
- arrARImgSrc[AR_ASKUSER] = "askuser.gif";
-
- arrALImgSrc[AL_IGNORE] = "ignore.gif";
- arrALImgSrc[AL_MONITOR] = "monitor.gif";
-
- arrARTitles[AR_ALLOW] = "Allow";
- arrARTitles[AR_PREVENT] = "Prevent";
- arrARTitles[AR_ASKUSER] = "Ask User";
-
- arrALTitles[AL_IGNORE] = "Ignore";
- arrALTitles[AL_MONITOR] = "Monitor";
-
- var arrLinksApp = new Array();
-
- var NO_SYSPRIV_ACCESS_TYPES = 6;
- var SysprivAccessTypes = new Array(NO_SYSPRIV_ACCESS_TYPES);
-
- SysprivAccessTypes[0] = AT_SYSPRIV_FORCED_PROC_THREAD_TERM;
- SysprivAccessTypes[1] = AT_SYSPRIV_SYSTEMSHUTDOWN;
- SysprivAccessTypes[2] = AT_SYSPRIV_SETOBJSECURITY;
- SysprivAccessTypes[3] = AT_SYSPRIV_INJECTCODE;
- SysprivAccessTypes[4] = AT_SYSPRIV_ACQUIRESYSPRIV;
- SysprivAccessTypes[5] = AT_SYSPRIV_CLIPBOARDACCESS;
-
- var strHeaders = new Array(NO_COLUMNS);
- strHeaders[0] = TXT_ID_CAPTION;
- strHeaders[1] = TXT_APP_CAPTION;
- strHeaders[2] = TXT_ACCESS;
- strHeaders[3] = TXT_AUDIT;
- strHeaders[4] = TXT_ASGNMT;
-
- var arrAllClientRules = null, // all VBA, SysPrio, DevPrio rules from Client db
- arrAllServerRules = null, // dtto. from server db
- arrRuleTriples; // rule triples from both dbs grouped by app/group
-
- var ServerParser = null, ClientParser = null, ServerAppParser = null, ClientAppParser = null, ClientRuleList = null,
- ServerRuleList = null;
-
- var firstLabel = new Array(),
- arrLabelTypes = new Array();
-
- var iMaxServerId = 0, iMaxClientId = 0;
-
- var iContext = 0, iManaged = 0, iProductType = window.external.ProductType;
- var ctrlAsgnmt = window.external.Context ? parent.frames.assignmentFrame.ctrlAsgnmt : null;
- var strAsgnmt = "";
-
- function SetAssignment(str)
- {
- strAsgnmt = str;
- _ruleList.innerHTML = GetRuleList();
- }
-
- function RuleTriple(r1, r2, r3)
- {
- this[0] = r1;
- this[1] = r2;
- this[2] = r3;
- }
-
- function LoadAllRules(ruleList, arrRulesToStore)
- {
-
- var i, j, maxId = 0;
- ruleListEnum = new Enumerator(ruleList);
- ruleListEnum.moveFirst();
- j = arrRulesToStore.length;
- while (!ruleListEnum.atEnd())
- {
- //add option to array
- var rule = ruleListEnum.item();
-
- var id;
- var curOT = rule.ObjectType;
- if (curOT == OT_VBAMACRO || curOT == OT_SYSTEMPRIV || curOT == OT_DEVICEPRIV)
- {
- id = GetRuleID(rule);
- if (id > maxId)
- maxId = id;
-
- // find 'full' access type, convert it into specific access types
- var adList = rule.AccessDescriptorList;
- var adEnum = new Enumerator(adList);
- adEnum.moveFirst();
- var accessDescriptor = null;
- if (!adEnum.atEnd())
- {
- var acCur = adEnum.item();
- switch(curOT)
- {
- case OT_VBAMACRO:
- if (acCur.AccessType == AT_VBA_FULL)
- {
- adList.Clear();
- for (i = 0; i < 4; i++)
- {
- var ad = adList.CreateAccessDescriptor();
- ad.AccessType = VbaAccessTypes[i];
- ad.AccessResult = acCur.AccessResult;
- ad.AuditLevel = acCur.AuditLevel;
- adList.Insert(ad);
- }
- }
- break;
- case OT_SYSTEMPRIV:
- if (acCur.AccessType == AT_SYSPRIV_ALL)
- {
- adList.Clear();
- for (i = 0; i < 6; i++)
- {
- var ad = adList.CreateAccessDescriptor();
- ad.AccessType = SysprivAccessTypes[i];
- ad.AccessResult = acCur.AccessResult;
- ad.AuditLevel = acCur.AuditLevel;
- adList.Insert(ad);
- }
- }
- break;
- }
- }
-
- arrRulesToStore[j++] = rule;
- }
- ruleListEnum.moveNext(); //Get next rule
- }
- return maxId;
- }
-
- function GetRuleList()
- {
- var Option, OptList, strRules = HTML_THIS_DIV_HEADER;
- iContext = window.external.Context;
- iManaged = window.external.Managed;
- if (iContext)
- iManaged = 1;
-
- if (iContext == 0)
- strAsgnmt = window.external.LoggedUser;
-
- try
- {
- ServerParser = window.external.ServerParser(1) ;
- ClientParser = window.external.ClientParser(1) ;
- ServerAppParser = window.external.ServerParser(64) ;
- ClientAppParser = window.external.ClientParser(64) ;
- } catch(e)
- {
- alert(ERR_GET_MODULE_PARSER);
- return;
- }
-
- try
- {
- if (ServerParser != null)
- ServerRuleList = ServerParser.RuleList;
- if (ClientParser != null)
- ClientRuleList = ClientParser.RuleList;
- } catch(e)
- {
- alert(ERR_GET_RULELIST);
- return;
- }
-
- arrAllClientRules = new Array();
- arrAllServerRules = new Array();
- arrRuleTriples = new Array();
-
- if ((iContext == 0 && iManaged == 1) || !window.external.IsAdmin)
- {
- strDisabled[PRIOR_HIGH] = HTML_DISABLED;
- strDisabled[PRIOR_LOW] = HTML_DISABLED;
- }
- else
- {
- strDisabled[PRIOR_HIGH] = '';
- strDisabled[PRIOR_LOW] = '';
- }
-
- strDisabled[PRIOR_NORMAL] = "";
-
- if (ClientRuleList != null)
- iMaxClientId = LoadAllRules(ClientRuleList, arrAllClientRules);
- if (ServerRuleList != null)
- iMaxServerId = LoadAllRules(ServerRuleList, arrAllServerRules);
-
- // iShowObjects = cmbShowObjects.options[cmbShowObjects.selectedIndex].value;
- iShowObjects = 4;
- if (ServerRuleList != null && (iShowObjects == 0 || iShowObjects == 2 || iShowObjects == 3))
- {
- strRules = HTML_TABLE_LABEL_HEADER1 + "#01088b" + HTML_TABLE_LABEL_HEADER2 + TXT_PRO_HIGH_MASTER + HTML_TABLE_LABEL_TRAILER;
- strRules += GetRuleListByPriority(arrAllServerRules, PRIOR_HIGH, "Server")
- + HTML_TABLES_SEPARATOR;
- }
-
- if (ClientRuleList != null && (iShowObjects == 0 || iShowObjects == 1))
- {
- strRules += HTML_TABLE_LABEL_HEADER1 + "#7aa1e6" + HTML_TABLE_LABEL_HEADER2 + TXT_CLIENT + HTML_TABLE_LABEL_TRAILER;
- strRules += GetRuleListByPriority(arrAllClientRules, PRIOR_NORMAL, "Client")
- + HTML_TABLES_SEPARATOR;
- }
-
- if (ServerRuleList != null && (iShowObjects == 0 || iShowObjects == 2 || iShowObjects == 4))
- {
- strRules += HTML_TABLE_LABEL_HEADER1 + "#01088b" + HTML_TABLE_LABEL_HEADER2 + TXT_PRO_LOW_MASTER + HTML_TABLE_LABEL_TRAILER;
- strRules += GetRuleListByPriority(arrAllServerRules, PRIOR_LOW, "Server")
- }
-
- if (ServerRuleList != null && (iShowObjects == 0 || iShowObjects == 2 || iShowObjects == 4))
- {
- strRules += TXT_SAFETOINJECT;
- strRules += GetDllLabelListHtmlStr( );
- }
-
- strRules += HTML_THIS_DIV_TRAILER;
- return strRules;
- }
-
- function GetRuleListByPriority(arrAllRules, prio, ParserName)
- {
-
- var strRetVal = '<table width="350" border="0" bgcolor="#E7EFF7"><tr><td width=200>';
- strRetVal += '<A href="#" style="color: Black; text-decoration: none;" ' + strDisabled[prio];
- if (strDisabled[prio] == '')
- strRetVal += 'onclick="OnAdd(' + prio + ',0)"';
- strRetVal += '>' + HTML_INSERT_USER_RULE + '</A></td>';
- if (PRIOR_NORMAL != prio)
- {
- strRetVal += '<td width=175>';
- strRetVal += '<A href="#" style="color: Black; text-decoration: none;" ' + strDisabled[prio];
- if (strDisabled[prio] == '')
- strRetVal += 'onclick="OnAdd(' + prio + ',1)"';
- strRetVal += '>' + HTML_INSERT_SYSTEM_RULE + '</A></td>';
- strRetVal += '</td>';
- }
- strRetVal += '</tr></table>';
- var i;
-
- strRetVal += HTML_TABLE_HEADER;
-
- strRetVal += HTML_ROW_HEADER;
- for (i = 0; i < NO_COLUMNS; i++) {
- strRetVal += HTML_HEADER_HEADER + strHeaders[i] + HTML_HEADER_TRAILER;
- }
- strRetVal += HTML_ROW_TRAILER;
-
- j = arrRuleTriples.length;
- for (i = 0; i < arrAllRules.length; i++)
- {
- var rule = arrAllRules[i];
- var ot = rule.ObjectType
- if (!RuleTripleExists(rule) &&
- (ot == OT_VBAMACRO || ot == OT_SYSTEMPRIV || ot == OT_DEVICEPRIV)
- && rule.Priority == prio)
- {
- var ruleTriple;
- switch (ot)
- {
- case OT_VBAMACRO:
- ruleTriple = new RuleTriple(rule,
- GetSysPrioRule(rule, arrAllRules),
- GetDevPrioRule(rule, arrAllRules)
- );
- break;
- case OT_SYSTEMPRIV:
- ruleTriple = new RuleTriple(GetVBARule(rule, arrAllRules),
- rule,
- GetDevPrioRule(rule, arrAllRules)
- );
- break;
- case OT_DEVICEPRIV:
- ruleTriple = new RuleTriple(GetVBARule(rule, arrAllRules),
- GetSysPrioRule(rule, arrAllRules),
- rule
- );
- break;
- }
- if (RuleTripleContainsRule(ruleTriple))
- {
- arrRuleTriples[j++] = ruleTriple;
- strRetVal += GetRuleHtmlStr(ruleTriple, prio, arrRuleTriples.length - 1);
- }
- }
- }
- strRetVal += HTML_TABLE_TRAILER;
- return strRetVal;
- }
-
- function RuleTripleContainsRule(ruleTriple)
- {
- var i;
- for (i = 0; i < 3; i++)
- if (ruleTriple[i] != null)
- return 1;
- return 0;
- }
-
- function GetApplication(ruleTriple)
- {
- var i;
- for (i = 0; i < 3; i++)
- if (ruleTriple[i] != null)
- return ruleTriple[i].Application;
- }
-
- function GetPriority(ruleTriple)
- {
- var i;
- for (i = 0; i < 3; i++)
- if (ruleTriple[i] != null)
- return ruleTriple[i].Priority;
- }
-
- function GetRuleAccount(ruleTriple)
- {
- var i;
- for (i = 0; i < 3; i++)
- if (ruleTriple[i] != null)
- return ruleTriple[i].Account;
- }
-
- function GetRuleID(rule)
- {
- return rule.RuleID & 0x0000ffff;
- }
-
- function GetRuleTripleID(ruleTriple)
- {
- var i;
- for (i = 0; i < 3; i++)
- if (ruleTriple[i] != null)
- {
- return ruleTriple[i].RuleID & 0x0000ffff;
- }
- }
-
- function GetAssignment(ruleTriple)
- {
- var i;
- for (i = 0; i < 3; i++)
- if (ruleTriple[i] != null)
- {
- return ruleTriple[i].Assignment;
- }
- }
-
- function GetRuleHtmlStr(ruleTriple, prio, index)
- {
- var strRule;
- if (RA_SYSTEM == GetRuleAccount(ruleTriple))
- strRule = HTML_SYSTEM_ROW_HEADER;
- else
- strRule = HTML_ROW_HEADER;
-
- if (!RuleTripleContainsRule(ruleTriple))
- return "";
-
- var ruleAsgnmt = GetAssignment(ruleTriple);
- var ruleAccount = GetRuleAccount(ruleTriple);
-
- switch (iContext)
- {
- case 0:
- ruleAsgnmt = ruleAsgnmt.toLowerCase( );
- if (ruleAsgnmt != "*" && strAsgnmt != TXT_ALLUSERS &&
- ruleAsgnmt.indexOf(strAsgnmt.toLowerCase( )) == -1)
- {
- return "";
- }
- break;
- case 1:
- if (!ctrlAsgnmt.CheckRule(ruleAsgnmt))
- {
- return "";
- }
- break;
- }
-
- var strID = GetRuleTripleID(ruleTriple);
- strRule += HTML_CELL_HEADER + strID + HTML_CELL_TRAILER;
-
- var strAppName = GetApplication(ruleTriple);
-
- if (strAppName == '')
- {
- ChangeApplication(ruleTriple, '*');
- if (RA_SYSTEM == ruleAccount)
- strAppName = STR_ALL_SYSTEM;
- else
- strAppName = STR_ALL_NONSYSTEM;
- strRule += HTML_CELL_HEADER +
- GetLabelListHtmlStr(prio, ruleAccount, 'SELECT_' + index, '*', index) +
- HTML_CELL_TRAILER;
- } else
- {
- strRule += HTML_CELL_HEADER;
- var strLinkApp = HTML_ID_LINK_HEADER;
- strLinkApp += 'id="app_' + index + '"';
- strLinkApp += ' onclick= ';
- if (strAppName == '*')
- {
- if (RA_SYSTEM == ruleAccount)
- strAppName = STR_ALL_SYSTEM;
- else
- strAppName = STR_ALL_NONSYSTEM;
- }
- if (strDisabled[prio] == "")
- strLinkApp +=
- '\'AppComboCleanup('+index+');this.outerHTML=GetLabelListHtmlStr(' + prio + ',' + ruleAccount + ',"SELECT_' + index +
- '","' + strAppName + '",' + index +');\' ';
- else
- strLinkApp += '"" ';
- strLinkApp += strDisabled[prio] + '>' + strAppName + HTML_ID_LINK_TRAILER;
- arrLinksApp[index] = strLinkApp;
- strRule += strLinkApp + HTML_CELL_TRAILER;
- }
-
- var AccessType, j;
- strRule +=
- HTML_CELL_HEADER + GenerateAccessResult(ruleTriple[1], prio,
- '"OnAccessResultChange(' + index + ',' +
- 'this.checked,' + prio + ')"');
- strRule += HTML_CELL_TRAILER + HTML_CELL_HEADER;
- strRule += GenerateAuditLevel(ruleTriple[1], prio,
- '"OnAuditLevelChange(' + index + ',' + 'this.checked,' + prio + ')"') + HTML_CELL_TRAILER;
-
- if (iManaged == 0 /* Home Version */ && prio != PRIOR_NORMAL ||
- iManaged == 1 && iContext == 1 /* BBE */)
- {
- strRule += HTML_CELL_HEADER;
- strAsgnDisabled = strDisabled[prio];
- if (iProductType == 1)
- strAsgnDisabled = HTML_DISABLED;
- if (iManaged)
- {
- strRule += HTML_ID_EDIT_HEADER + ' value="' + GetAssignment(ruleTriple) + '"' +
- ' onchange="OnAsgnmtChange(' + index + ',this.value);" ' + strAsgnDisabled + HTML_ID_EDIT_TRAILER;
- } else
- {
- strRule += HTML_ID_LINK_HEADER;
- strRule += ' onclick=';
- if (strAsgnDisabled == '')
- strRule += '"OnUsersChange(' + index +');"';
- else
- strRule += '"" ';
- strRule += strAsgnDisabled + '>' + GetAssignment(ruleTriple) + '</A>';
- }
- strRule += HTML_CELL_TRAILER;
- }
- else
- {
- strRule += HTML_CELL_HEADER + HTML_CELL_TRAILER;
- }
-
- strRule += HTML_CELL_HEADER +
- '<A href="#" ' + strDisabled[prio];
- if (strDisabled[prio] == "")
- strRule += 'onclick="OnDelete(' + prio + ',' + index + ')"';
- strRule += '>' + HTML_ICO_MINUS + HTML_CELL_TRAILER;
-
- strRule += HTML_ROW_TRAILER;
- return strRule;
- }
-
-
- function RuleTripleExists(rule)
- {
- var appRule = rule.Application;
- var rulePrio = rule.Priority;
- var ruleOT = rule.ObjectType;
- var asgnmtRule = rule.Assignment;
- var indIntoTriple;
- switch (ruleOT)
- {
- case OT_VBAMACRO:
- indIntoTriple = 0;
- break;
- case OT_SYSTEMPRIV:
- indIntoTriple = 1;
- break;
- case OT_DEVICEPRIV:
- indIntoTriple = 2;
- break;
- }
- for (i = 0; i < arrRuleTriples.length; i++)
- {
- if ( GetPriority(arrRuleTriples[i]) == rulePrio &&
- GetApplication(arrRuleTriples[i]) == appRule &&
- GetAssignment(arrRuleTriples[i]) == asgnmtRule &&
- arrRuleTriples[i][indIntoTriple] == rule)
- return 1;
- }
- return 0;
- }
-
-
- function GetVBARule(rule, arrAllRules)
- {
- var strApplication = rule.Application;
- var ruleFound = null;
- var i;
-
- for (i = 0; i < arrAllRules.length; i++)
- {
- var ruleCur = arrAllRules[i];
- if (ruleCur.ObjectType == OT_VBAMACRO &&
- ruleCur.Application == strApplication)
- {
- ruleFound = ruleCur;
- break;
- }
- }
- return ruleFound;
- }
-
- function GetSysPrioRule(rule, arrAllRules)
- {
- var strApplication = rule.Application;
- var ruleFound = null;
- var i;
-
- for (i = 0; i < arrAllRules.length; i++)
- {
- var ruleCur = arrAllRules[i];
- if (ruleCur.ObjectType == OT_SYSTEMPRIV &&
- ruleCur.Application == strApplication)
- {
- ruleFound = ruleCur;
- break;
- }
- }
- return ruleFound;
- }
-
- function GetDevPrioRule(rule, arrAllRules)
- {
- var strApplication = rule.Application;
- var ruleFound = null;
- var i;
-
- for (i = 0; i < arrAllRules.length; i++)
- {
- var ruleCur = arrAllRules[i];
- if (ruleCur.ObjectType == OT_DEVICEPRIV &&
- ruleCur.Application == strApplication)
- {
- ruleFound = ruleCur;
- break;
- }
- }
- return ruleFound;
- }
-
- function OnAdd(priority, account)
- {
- var ruleList;
- switch (priority)
- {
- case PRIOR_HIGH:
- case PRIOR_LOW:
- ruleList = ServerRuleList;
- break;
- case PRIOR_NORMAL:
- ruleList = ClientRuleList;
- }
-
- var newRule = ruleList.CreateRule();
- switch (priority)
- {
- case PRIOR_HIGH:
- case PRIOR_LOW:
- SetRuleID(newRule, 1, ++iMaxServerId, 1);
- break;
- case PRIOR_NORMAL:
- SetRuleID(newRule, 1, ++iMaxClientId, 0);
- }
- newRule.Application = '';
- newRule.Priority = priority;
- newRule.ObjectType = OT_SYSTEMPRIV;
- newRule.Path = "*";
- newRule.PathType = RT_DEFINITION;
- newRule.Assignment = (window.external.Context ? ctrlAsgnmt.Assignment : "*");
- newRule.Account = account;
- ruleList.Insert(newRule, newRule);
- _ruleList.innerHTML = GetRuleList();
- }
-
- function OnDelete(priority, index)
- {
- var arg = new Array(2);
- var i;
- var strNewAsgnmt = "";
- var curStrAsgnmt = (window.external.Context ? ctrlAsgnmt.Assignment : strAsgnmt);
-
- if (window.external.Context == 1 && !ctrlAsgnmt.IsEmptyOrAll(curStrAsgnmt))
- {
- try
- {
- ruleTriple = arrRuleTriples[index];
- strNewAsgnmt = ctrlAsgnmt.Remove(GetAssignment(ruleTriple));
- for (i = 0; i < 3; i++)
- if (ruleTriple[i] != null)
- ruleTriple[i].Assignment = strNewAsgnmt;
- } catch (e)
- {
- alert("Access violation");
- }
- }
-
- if (window.external.Context == 0 || strNewAsgnmt == "")
- {
-
- arg[0] = TXT_QST_REALLYDELETE1 + '"' + GetApplication(arrRuleTriples[index]) + '"' +
- TXT_QST_REALLYDELETE2;
- arg[1] = TXT_DELETING;
- var answer=showModalDialog('question.html', arg, 'dialogWidth=300pt;dialogHeight=100pt;');
- if (answer == 0)
- return;
-
- var Parser;
- switch (priority)
- {
- case PRIOR_HIGH:
- case PRIOR_LOW:
- ruleList = ServerRuleList;
- break;
- case PRIOR_NORMAL:
- ruleList = ClientRuleList;
- break;
- }
-
- try
- {
- ruleTriple = arrRuleTriples[index];
- for (i = 0; i < 3; i++)
- if (ruleTriple[i] != null)
- ruleList.Remove(ruleTriple[i]);
- } catch (e)
- {
- alert("Access violation");
- }
- }
- _ruleList.innerHTML = GetRuleList();
- }
-
- function OnAppChange(prio, elem, index, value)
- {
- var i;
- var ruleTriple, ruleAccount;
- try
- {
- ruleTriple = arrRuleTriples[index];
- for (i = 0; i < 3; i++)
- {
- if (ruleTriple[i] != null)
- {
- arrRuleTriples[index][i].Application = value;
- arrRuleTriples[index][i].AppType = arrLabelTypes[value];
- }
- }
- } catch (e)
- {
- alert("Access violation");
- }
- var strLinkApp = HTML_ID_LINK_HEADER;
- strLinkApp += 'id="app_' + index + '"';
- strLinkApp += ' onclick=';
- ruleAccount = GetRuleAccount(ruleTriple);
- if (strDisabled[prio] == "")
- strLinkApp +=
- '\'AppComboCleanup('+index+');this.outerHTML=GetLabelListHtmlStr(' + prio + ',' + ruleAccount + ',"SELECT_' + index +
- '","' + value + '",' + index +');\' ';
- else
- strLinkApp += '"" ';
-
- var strAppName = value;
-
- if ('*' == strAppName)
- {
- if (RA_SYSTEM == ruleAccount)
- strAppName = STR_ALL_SYSTEM;
- else
- strAppName = STR_ALL_NONSYSTEM;
- }
-
- strLinkApp += strDisabled[prio] + '>' + strAppName + HTML_ID_LINK_TRAILER;
- arrLinksApp[index] = strLinkApp;
- elem.outerHTML = strLinkApp;
- }
-
- function AppComboCleanup(index)
- {
- var iIndex = parseInt(index);
- if (document.getElementById)
- {
- var combo = document.getElementById("SELECT_"+iLastIndex);
- if (combo)
- {
- combo.outerHTML = arrLinksApp[iLastIndex];
- }
- }
- iLastIndex = iIndex;
- }
-
- function OnIDChange(index, value, priority)
- {
- try
- {
- SetRuleTripleID(arrRuleTriples[index], parseInt(value), (priority==PRIOR_HIGH || priority==PRIOR_LOW) ? 1 : 0);
- } catch (e)
- {
- alert("ID already exists");
- }
- }
-
- function OnAccessResultChange(index, value, prio)
- {
- try
- {
- var rule = arrRuleTriples[index][1];
- var adList;
- if (rule == null)
- {
- rule = CreateRule(index, subindex, prio);
- }
- adList = rule.AccessDescriptorList;
- var adEnum = new Enumerator(adList);
- adEnum.moveFirst();
- var accessDescriptor = adEnum.item();
- var auditLevel = AL_IGNORE;
- if (accessDescriptor)
- auditLevel = accessDescriptor.AuditLevel;
- adList.Clear();
- for (var i = 0; i < NO_SYSPRIV_ACCESS_TYPES; i++)
- {
- accessDescriptor = adList.CreateAccessDescriptor();
- accessDescriptor.AccessType = SysprivAccessTypes[i];
- accessDescriptor.AuditLevel = auditLevel;
- accessDescriptor.AccessResult = value ? AR_ALLOW : AR_PREVENT;
- adList.Insert(accessDescriptor);
- }
- } catch (e)
- {
- alert("Access violation");
- }
- }
-
- function OnAuditLevelChange(index, value, prio)
- {
- try
- {
- var rule = arrRuleTriples[index][1];
- var adList;
- if (rule == null)
- {
- rule = CreateRule(index, subindex, prio);
- }
- adList = rule.AccessDescriptorList;
- var adEnum = new Enumerator(adList);
- adEnum.moveFirst();
- var accessDescriptor = adEnum.item();
- var accessResult = AR_ALLOW;
- if (accessDescriptor)
- accessResult = accessDescriptor.AccessResult;
- adList.Clear();
- for (var i = 0; i < NO_SYSPRIV_ACCESS_TYPES; i++)
- {
- accessDescriptor = adList.CreateAccessDescriptor();
- accessDescriptor.AccessType = SysprivAccessTypes[i];
- accessDescriptor.AuditLevel = value ? AL_MONITOR : AL_IGNORE;
- accessDescriptor.AccessResult = accessResult;
- adList.Insert(accessDescriptor);
- }
- } catch (e)
- {
- alert("Access violation");
- }
- }
-
- function OnAuditLevelRotate(index, subindex, accessType, elem, prio)
- {
- var alCur = -1, alNext = -1;
- var src = elem.innerHTML;
- var idxIgnore = src.search(arrALImgSrc[AL_IGNORE]),
- idxMonitor = src.search(arrALImgSrc[AL_MONITOR]);
- if (idxIgnore != -1)
- {
- alCur = AL_IGNORE;
- alNext = AL_MONITOR;
- } else if (idxMonitor != -1)
- {
- alCur = AL_MONITOR;
- alNext = AL_IGNORE;
- }
- if (alNext != -1)
- try
- {
- var rule = arrRuleTriples[index][subindex];
- if (rule == null)
- {
- rule = CreateRule(index, subindex, prio);
- }
- var adList = rule.AccessDescriptorList;
- var adEnum = new Enumerator(adList);
- adEnum.moveFirst();
- var accessDescriptor = null;
- while (!adEnum.atEnd())
- {
- var acCur = adEnum.item();
- if (acCur.AccessType == accessType)
- {
- accessDescriptor = acCur;
- break;
- }
- adEnum.moveNext();
- }
- if (accessDescriptor == null)
- {
- accessDescriptor = adList.CreateAccessDescriptor();
- accessDescriptor.AccessType = accessType;
- accessDescriptor.AccessResult = AR_ALLOW;
- adList.Insert(accessDescriptor);
- }
- accessDescriptor.AuditLevel = alNext;
- src = src.replace(arrALImgSrc[alCur], arrALImgSrc[alNext]);
- src = src.replace(arrALTitles[alCur], arrALTitles[alNext]);
- elem.innerHTML = src;
- } catch (e)
- {
- alert("Access violation");
- }
- }
-
- function OnUsersChange(index)
- {
- var ruleTriple = arrRuleTriples[index];
- var strNewUsers = showModalDialog('UsersDlg.html', new Array(GetAssignment(ruleTriple)), 'dialogWidth=215pt;dialogHeight=200pt;');
- try
- {
- var i;
- for (i = 0; i < 3; i++)
- if (ruleTriple[i] != null)
- ruleTriple[i].Assignment = strNewUsers;
- _ruleList.innerHTML = GetRuleList();
- } catch (e)
- {
- alert("Access violation");
- }
- }
-
- function OnAsgnmtChange(index, newVal)
- {
- try
- {
- var ruleTriple = arrRuleTriples[index];
- var i;
- for (i = 0; i < 3; i++)
- if (ruleTriple[i] != null)
- ruleTriple[i].Assignment = newVal;
- _ruleList.innerHTML = GetRuleList();
- } catch (e)
- {
- alert("Access violation");
- }
- }
-
- function GenerateAccessResult(rule, prio, strOnChange)
- {
- var strARList = HTML_CHECK_HEADER + strDisabled[prio] + ' onclick=' + strOnChange + ' ';
- var i, iCurAR; // access result set for this rule and access type
- if (rule != null)
- {
- var enumARDesc = new Enumerator(rule.AccessDescriptorList);
-
- // find access descriptor for this access type
- var adList = rule.AccessDescriptorList;
- var adEnum = new Enumerator(adList);
- adEnum.moveFirst();
- var accessDescriptor = adEnum.item();
- if (accessDescriptor == null)
- iCurAR = AR_ALLOW;
- else
- iCurAR = accessDescriptor.AccessResult;
- } else
- iCurAR = AR_ALLOW;
-
- switch (iCurAR)
- {
- case AR_ALLOW:
- strARList += "checked ";
- break;
- default:
- break;
- }
- strARList += HTML_CHECK_TRAILER;
- return strARList;
- }
-
- function GenerateAccessResultIcon(rule, prio, accessType, strOnChange)
- {
- var strARList = '<A ' + strDisabled[prio] + ' onclick=' + strOnChange + '>';
- var i, iCurAR; // access result set for this rule and access type
- if (rule != null)
- {
- var enumARDesc = new Enumerator(rule.AccessDescriptorList);
-
- // find access descriptor for this access type
- var adList = rule.AccessDescriptorList;
- var adEnum = new Enumerator(adList);
- adEnum.moveFirst();
- var accessDescriptor = null;
- while (!adEnum.atEnd())
- {
- var acCur = adEnum.item();
- if (acCur.AccessType == accessType)
- {
- accessDescriptor = acCur;
- break;
- }
- adEnum.moveNext();
- }
- if (accessDescriptor == null)
- iCurAR = AR_ALLOW;
- else
- iCurAR = accessDescriptor.AccessResult;
- } else
- iCurAR = AR_ALLOW;
-
- strARList += '<IMG src="' + arrARImgSrc[iCurAR] + '" title="' + arrARTitles[iCurAR] + '"></IMG>';
- strARList += '</A>';
- return strARList;
- }
-
- function GenerateAuditLevel(rule, prio, strOnChange)
- {
- var strARList = HTML_CHECK_HEADER + strDisabled[prio] + ' onclick=' + strOnChange + ' ';
- var i, iCurAL; // access result set for this rule and access type
- if (rule)
- {
- var adList = rule.AccessDescriptorList;
- var adEnum = new Enumerator(adList);
- adEnum.moveFirst();
- var accessDescriptor = adEnum.item();
- if (accessDescriptor)
- iCurAL = accessDescriptor.AuditLevel;
- else
- iCurAL = AL_IGNORE;
- } else
- iCurAL = AL_IGNORE;
-
- switch (iCurAL)
- {
- case AL_MONITOR:
- strARList += "checked ";
- break;
- default:
- break;
- }
- strARList += HTML_CHECK_TRAILER;
- return strARList;
- }
-
- function GenerateVBAAccessResult(rule, prio, macroOrAuto, strOnChange)
- {
- var strARList = HTML_SELECT_HEADER + strDisabled[prio] + ' onchange=' + strOnChange + '>';
- var i, iCurOption;
- if (rule != null)
- {
- var enumARDesc = new Enumerator(rule.AccessDescriptorList);
-
- // find access descriptor for this access type
- var adList = rule.AccessDescriptorList;
- var adEnum = new Enumerator(adList);
- adEnum.moveFirst();
- var accessDescriptor = null;
- iCurOption = 2;
- while (!adEnum.atEnd())
- {
- var acCur = adEnum.item();
- var atCur = acCur.AccessType;
- if ( macroOrAuto && (atCur == AT_VBA_MACRO_RUN_IN_ORIG ||
- atCur == AT_VBA_MACRO_RUN_IN_SPECIAL) ||
- !macroOrAuto && (atCur == AT_VBA_AUTO_RUN_IN_ORIG ||
- atCur == AT_VBA_AUTO_RUN_IN_SPECIAL) )
- {
- accessDescriptor = acCur;
- if ( atCur == AT_VBA_MACRO_RUN_IN_ORIG ||
- atCur == AT_VBA_AUTO_RUN_IN_ORIG )
- {
- if (acCur.AccessResult == AR_ALLOW)
- {
- iCurOption = 0;
- break;
- }
-
- }
- if ( atCur == AT_VBA_MACRO_RUN_IN_SPECIAL ||
- atCur == AT_VBA_AUTO_RUN_IN_SPECIAL )
- {
- if (acCur.AccessResult == AR_ALLOW)
- {
- iCurOption = 1;
- break;
- }
- }
- }
- adEnum.moveNext();
- }
- if (accessDescriptor == null)
- iCurOption = 0;
- } else
- iCurOption = 0;
-
- for (i = 0; i <= 2; i++)
- {
- strARList += '<OPTION value="' + i + '"';
- if (i == iCurOption)
- {
- strARList += ' selected ';
- }
- strARList += '>' + arrVBAOptions[i] + '</OPTION>';
- }
- strARList += HTML_SELECT_TRAILER;
- return strARList;
- }
-
- function GenerateShutdownAuditLevel(rule, prio, accessType, strOnChange)
- {
- var strALList = HTML_SELECT_HEADER + strDisabled[prio] + ' onchange=' + strOnChange + '>';
- var i, iCurAL; // access result set for this rule and access type
- if (rule != null)
- {
- var enumARDesc = new Enumerator(rule.AccessDescriptorList);
-
- // find access descriptor for this access type
- var adList = rule.AccessDescriptorList;
- var adEnum = new Enumerator(adList);
- adEnum.moveFirst();
- var accessDescriptor = null;
- while (!adEnum.atEnd())
- {
- var acCur = adEnum.item();
- if (acCur.AccessType == accessType)
- {
- accessDescriptor = acCur;
- break;
- }
- adEnum.moveNext();
- }
- if (accessDescriptor == null)
- iCurAL = AL_IGNORE;
- else
- iCurAL = accessDescriptor.AuditLevel;
- } else
- iCurAL = AL_IGNORE;
-
- for (i = AL_IGNORE; i <= AL_MONITOR; i++)
- {
- strALList += '<OPTION value="' + i + '"';
- if (i == iCurAL)
- {
- strALList += ' selected ';
- }
- strALList += '>' + arrAuditLevelStrings[i] + '</OPTION>';
- }
- strALList += HTML_SELECT_TRAILER;
- return strALList;
- }
-
- function GenerateAuditLevelCombo(rule, prio, accessType, strOnChange)
- {
- var strALList = HTML_SELECT_HEADER + strDisabled[prio] + ' onchange=' + strOnChange + '>';
- var i, iCurAL; // access result set for this rule and access type
- if (rule != null)
- {
- var enumARDesc = new Enumerator(rule.AccessDescriptorList);
-
- // find access descriptor for this access type
- var adList = rule.AccessDescriptorList;
- var adEnum = new Enumerator(adList);
- adEnum.moveFirst();
- var accessDescriptor = null;
- while (!adEnum.atEnd())
- {
- var acCur = adEnum.item();
- if (acCur.AccessType == accessType)
- {
- accessDescriptor = acCur;
- break;
- }
- adEnum.moveNext();
- }
- if (accessDescriptor == null)
- iCurAL = AL_IGNORE;
- else
- iCurAL = accessDescriptor.AuditLevel;
- } else
- iCurAL = AL_IGNORE;
-
- for (i = AL_IGNORE; i <= AL_ALERT; i++)
- {
- strALList += '<OPTION value="' + i + '"';
- if (i == iCurAL)
- {
- strALList += ' selected ';
- }
- strALList += '>' + arrAuditLevelStrings[i] + '</OPTION>';
- }
- strALList += HTML_SELECT_TRAILER;
- return strALList;
- }
-
- function GenerateVBAAuditLevel(rule, prio, macroOrAuto, strOnChange)
- {
- var strALList = HTML_SELECT_HEADER + strDisabled[prio] + ' onchange=' + strOnChange + '>';
- var i, iCurAL; // access result set for this rule and access type
- if (rule != null)
- {
- var enumARDesc = new Enumerator(rule.AccessDescriptorList);
-
- // find access descriptor for this access type
- var adList = rule.AccessDescriptorList;
- var adEnum = new Enumerator(adList);
- adEnum.moveFirst();
- var accessDescriptor = null;
- while (!adEnum.atEnd())
- {
- var acCur = adEnum.item();
- var atCur = acCur.AccessType;
- if (macroOrAuto && (acCur.AccessType == AT_VBA_MACRO_RUN_IN_ORIG ||
- acCur.AccessType == AT_VBA_MACRO_RUN_IN_SPECIAL) ||
- !macroOrAuto && (acCur.AccessType == AT_VBA_AUTO_RUN_IN_ORIG ||
- acCur.AccessType == AT_VBA_AUTO_RUN_IN_SPECIAL) )
- {
- accessDescriptor = acCur;
- break;
- }
- adEnum.moveNext();
- }
- if (accessDescriptor == null)
- iCurAL = AL_IGNORE;
- else
- iCurAL = accessDescriptor.AuditLevel;
- } else
- iCurAL = AL_IGNORE;
-
- for (i = AL_IGNORE; i <= AL_MONITOR; i++)
- {
- strALList += '<OPTION value="' + i + '"';
- if (i == iCurAL)
- {
- strALList += ' selected ';
- }
- strALList += '>' + arrAuditLevelStrings[i] + '</OPTION>';
- }
- strALList += HTML_SELECT_TRAILER;
- return strALList;
- }
-
- function ChangeApplication(ruleTriple, appNew)
- {
- var i;
- for (i = 0; i < 3; i++)
- {
- if (ruleTriple[i] != null)
- ruleTriple[i].Application = appNew;
- SetRuleTripleAppType(ruleTriple, arrLabelTypes[appNew]);
- }
- }
-
- function SetRuleID(rule, type, value, bIsServer)
- {
- var ruleId = value | bIsServer<<16 | arrGuardIds[type]<<24;
- rule.RuleID = ruleId;
- }
-
- function SetRuleIDFromTriple(subindex, ruleTriple, bIsServer)
- {
- var i, id = 0;
- for (i = 0; i < 3; i++)
- if (subindex != i && ruleTriple[i] != null)
- {
- id = ruleTriple[i].RuleID & 0x0000ffff;
- break;
- }
- var ruleId = id | bIsServer<<16 | arrGuardIds[subindex]<<24;
- ruleTriple[subindex].RuleID = ruleId;
- }
-
- function SetRuleTripleID(ruleTriple, id, bIsServer)
- {
- var i;
- for (i = 0; i < 3; i++)
- {
- var ruleId = arrGuardIds[i]<<24 | bIsServer<<16 | id;
- if (ruleTriple[i] != null)
- ruleTriple[i].RuleID = ruleId;
- }
- }
-
- function SetRuleTripleAppType(ruleTriple, appType)
- {
- var i;
- for (i = 0; i < 3; i++)
- {
- if (ruleTriple[i] != null)
- ruleTriple[i].AppType = appType;
- }
- }
-
- function CreateRule(index, subindex, priority)
- {
- var ruleList, ruleTriple = arrRuleTriples[index];
- var strApp = "", iAppType = 0, strAssignment = "";
- var i;
- switch(priority)
- {
- case PRIOR_LOW:
- case PRIOR_HIGH:
- ruleList = ServerRuleList;
- break;
- case PRIOR_NORMAL:
- ruleList = ClientRuleList;
- break;
- }
-
- for (i = 0; i < 3; i++)
- if (ruleTriple[i] != null)
- {
- strApp = ruleTriple[i].Application;
- iAppType = ruleTriple[i].AppType;
- strAssignment = ruleTriple[i].Assignment;
- }
- if (strApp == "")
- {
- alert("Failed to create rule");
- return;
- }
- var ruleNew = ruleList.CreateRule();
- ruleNew.Application = strApp;
- ruleNew.AppType = iAppType;
- switch (subindex)
- {
- case 0:
- ruleNew.ObjectType = OT_VBAMACRO;
- break;
- case 1:
- ruleNew.ObjectType = OT_SYSTEMPRIV;
- break;
- case 2:
- ruleNew.ObjectType = OT_DEVICEPRIV;
- break;
- }
- ruleNew.Priority = priority;
- ruleNew.Path = "*";
- ruleNew.PathType = RT_DEFINITION;
- ruleNew.Assignment = strAssignment;
- ruleList.Insert(ruleNew, ruleNew);
- ruleTriple[subindex] = ruleNew;
- SetRuleIDFromTriple(subindex, ruleTriple, (priority == PRIOR_HIGH || priority == PRIOR_LOW) ? 1 : 0);
- return ruleNew;
- }
-
- function AddToAssignment()
- {
- ctrlAsgnmt.AddFromSBXList(OT_VBAMACRO, ClientParser, ServerParser, ClientAppParser, ServerAppParser );
- _ruleList.innerHTML = GetRuleList();
- }
-